package org.example.curriculum_design_6_16.service;

import org.example.curriculum_design_6_16.entity.pojo.ScholarshipCandidate;
import org.example.curriculum_design_6_16.entity.vo.ScholarshipRankingVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
* @author 郑凯
* @description 针对表【scholarship_candidate】的数据库操作Service
* @createDate 2025-06-16 09:26:01
*/
public interface ScholarshipCandidateService extends IService<ScholarshipCandidate> {

    /**
     * 计算指定年级的奖学金排名
     * @param grade 年级：2-研二，3-研三
     * @param academicYear 学年
     * @param scholarshipType 奖学金类型
     */
    void calculateScholarshipRanking(Integer grade, String academicYear, String scholarshipType);

    /**
     * 计算所有年级的奖学金排名
     * @param academicYear 学年
     * @param scholarshipType 奖学金类型
     */
    void calculateAllScholarshipRankings(String academicYear, String scholarshipType);

    /**
     * 获取指定年级的奖学金排名结果
     * @param grade 年级：2-研二，3-研三
     * @param academicYear 学年
     * @param scholarshipType 奖学金类型
     * @return 排名结果列表
     */
    List<ScholarshipRankingVo> getScholarshipRanking(Integer grade, String academicYear, String scholarshipType);

    /**
     * 获取学生的奖学金排名
     * @param studentId 学生ID
     * @param academicYear 学年
     * @param scholarshipType 奖学金类型
     * @return 学生排名信息
     */
    ScholarshipCandidate getStudentRanking(String studentId, String academicYear, String scholarshipType);

    /**
     * 获取所有年级的排名统计信息
     * @param academicYear 学年
     * @param scholarshipType 奖学金类型
     * @return 统计信息
     */
    Map<String, Object> getRankingStatistics(String academicYear, String scholarshipType);
}
